package com.sinosoft.tcmcp.system.security;

import java.util.List;

import org.apache.shiro.SecurityUtils;

import com.sinosoft.framework.core.api.domain.RoleEntity;
import com.sinosoft.framework.core.common.utils.StringUtil;
import com.sinosoft.tcmcp.system.common.SystemContants;
import com.sinosoft.tcmcp.system.security.UserRealmService.ShiroUser;

/**
 * 安全验证工具类
 * @author xiaoxiong
 *
 */
public class SecurityUtil{
	
	/**
	 * 获取用户帐号
	 * @return	用户帐号
	 */
	public static String getUsername() {
		return SecurityUtils.getSubject().getPrincipals().getPrimaryPrincipal().toString();
	} 
	
	/**
	 * 判断用户是否登录
	 * @return	true/false
	 */
	public static boolean isLogin() {
		if(SecurityUtils.getSubject().isAuthenticated()) {
			return true;
		}
		return false;
	}
	
	/**
	 * 判断是否是应用系统管理员
	 * 1、获取用户身份令牌信息，是否系统管理员属性不为空则根据判断直接返回true/false
	 * 2、根据应用管理员角色信息集合判断：为空则返回false，不为空则返回true
	 * @return true/false
	 */
	public static boolean isApplicationAdmin(List<RoleEntity> adminRoles) {
		ShiroUser user = (ShiroUser)SecurityUtils.getSubject().getPrincipals().getPrimaryPrincipal();
		if(StringUtil.isBlank(user.getIsadmin())) {
			if(adminRoles == null || adminRoles.size() == 0) {
				user.setIsadmin(SystemContants.user_isadmin_no);
				return false;
			} else {
				user.setIsadmin(SystemContants.user_isadmin_yes);
				return true;
			}
		} else {
			if(SystemContants.user_isadmin_no.equals(user.getIsadmin())) {
				return false;
			} else {
				return true;
			}
		}
	}
}
